package com.ee.chat.common.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ee.chat.common.bean.MenuTree;
import com.ee.chat.common.entity.AdminRole;
import com.ee.chat.common.entity.AdminUser;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * <p>
 * Mapper接口
 * </p>
 *
 * @author Shane
 * @since 2019-07-11
 */
public interface AdminUserMapper extends BaseMapper<AdminUser> {

    /**
     * 获取用户拥有的功能
     * @Author Shane
     * @Date 2019/7/1817:12
     * @param userId    用户id
     * @return
     **/
    List<String> getUserPermissionUrls(@Param("userId") Integer userId);

    /**
     * 获取用户拥有的所有菜单
     * @Author Shane
     * @Date 2019/7/24 0:58
     * @param
     * @return
     */
    List<Integer> getUserMenuIds(@Param("userId") Integer userId);

    /**
     * 获取用户拥有的角色
     * @Author Shane
     * @Date 2019/7/24 0:05
     * @param
     * @return
     */
    List<AdminRole> getUserRoles(@Param("userId") Integer userId);

    /**
     * 根据pid获取树形菜单
     * @Author Shane
     * @Date 2019/7/24 0:35
     * @param pid
     * @param type  类型，0-菜单  1-功能
     * @return
     */
    List<MenuTree> getMenuTreeByPid(@Param("pid") Integer pid, @Param("type") Integer type);

    /**
     * 获取管理员列表
     * @Author Shane
     * @Date 2019/8/2816:27
     * @param
     * @return
     **/
    IPage<Map<String, Object>> getAdminUsers(Page page);

    /**
     * 删除用户角色
     * @Author Shane
     * @Date 2019/9/919:54
     * @param
     * @return
     **/
    int deleteUserRoleByUserId(@Param("userId") Integer userId);

    /**
     * 批量新增用户角色
     * @Author Shane
     * @Date 2019/9/919:55
     * @param
     * @return
     **/
    int batchAddUserRole(@Param("userRoles") List<Map<String, Object>> userRoles);

    /**
     * 根据用户名查询管理员用户
     * @Author Shane
     * @Date 2019/9/1017:08
     * @param
     * @return
     **/
    AdminUser getAdminUserByUsername(@Param("username") String username);
}